package com.igeek.list;

import java.util.Iterator;
import java.util.LinkedList;

public class Demo02 {

    public static void main(String[] args) {

        LinkedList<String> list = new LinkedList<>();
        /*
            LinkedList提供的方法：
            增：
                add(object) 在链表之后做追加元素
                add(int,object) 指定位置插入元素
                addAll(collection) 追加一个集合
                addAll(index,collection)
                addFirst(object) 在集合首个位置添加元素
                addLast(object) 在集合的末尾添加元素
                offer(obj) 返回boolean结果,将指定元素添加到列表末尾
                offerFirst(obj) 返回boolean结果,将指定元素添加到列表开头

            查：
                get(int) 根据索引位置查询元素，注意索引长度溢出的问题
                getFirst() 得到第一个元素
                getLast() 得到最后一个元素
                indexOf(object) 获取到指定元素首次出现的索引位置，如果未出现返回-1
                                如果指定元素是引用数据类型，入参的对象调用该对象的equals方法，比较两个元素是否相同
                element() 获取集合的头元素
                peek() 获取头元素，但不移除
                peekFirst()
                peekLast()

            删除：
                remove(int) 根据指定索引位置删除元素
                remove(obj) 根据元素值删除列表中首次出现的元素
                remove() 删除首个元素，并且返回首个元素
                pop() 删除首个元素，并且返回首个元素

            改：
                set(int,obj) 根据索引位置，修改元素值

         */
        list.add("hello");
        list.add("javaEE");
        list.add("javaSE");
        list.add("javaME");
        System.out.println(list);

        list.addFirst("world");
        list.add("js");


        System.out.println(list.get(3));
        System.out.println(list.element());

        System.out.println(list.offer("ss"));

        System.out.println(list.remove());

        System.out.println(list.pop());
        System.out.println(list);

        /*
            LinkedList遍历：
                iterator() 方法
                增强for循环
         */
        Iterator<String> it = list.iterator();

        for(String str:list){

        }
    }
}
